Skip to content

feat: add windows arm64 platform support - #266

Merged
devopvoid merged 5 commits into
devopvoid:mainfrom
SendableMetatype:feature/windows-aarch64
Sep 6, 2026
Merged

feat: add windows arm64 platform support#266
devopvoid merged 5 commits into
devopvoid:mainfrom
SendableMetatype:feature/windows-aarch64

Conversation

@SendableMetatype

Copy link
Copy Markdown
Contributor

This PR adds windows-aarch64 as a seventh platform. The natives cross compile on the windows-2022 runners, in the same pattern as the linux arm lanes. The build pipeline and the release pipeline both produce the new classifier.

The platform support was written by Joshua Castle (Kas-tle) for a downstream fork of this library, where Windows ARM64 natives have shipped since late 2025. His two commits are included with authorship preserved:

  • The arm64 toolchain file. It sets the CMake system values and TARGET_CPU. gn needs no more configuration to cross compile the engine. The chromium toolchain and the VS arm64 tools on the stock runner image supply the rest.
  • The clang-cl fix. The ClangCL toolset reads -Wno-nullability-completeness as an MSVC warning level option. The fix adds the /clang: prefix.

The three commits on top adapt his work to this repository:

  • The parent pom and the jni pom get windows-aarch64 profiles, with the same structure as the linux cross profiles. The new profiles follow the host-activated windows profiles in the pom, so their properties win. The macos cross profile uses the same declaration order.
  • The JNI shim builds with the ARM64 generator platform and the ClangCL toolset. The x86_64 build uses the same toolset, and the engine is clang-built, so the ABI stays consistent.
  • The CI lane has the same shape as the linux_arm lane: the cross build skips the tests, because arm64 binaries cannot run on the x86_64 runner.
  • The release workflow gets the matching lane. The new classifier is added to the publish verification list and to the attach-natives-all profile, so the single Central deployment includes it.
  • The getting started guide lists the new classifier.

No Java change is needed. The native loader already derives the library name from the OS and the architecture, so a Windows ARM64 JVM picks up the new DLL as is.

Validation on my fork: this run on current main builds all seven platforms, and the six existing ones build as before. A windows-11-arm runner also executed the new natives: it installed the exact jar from the build lane and ran the complete test suite with an arm64 JDK. All 122 tests passed, and the PE header of the DLL shows ARM64. That test job is not part of this PR, because the current convention is that cross lanes skip tests. Another PR by me can add native test lanes for the existing cross compiled platforms, and the Windows ARM64 lane can follow the same way. The validation run carries the changes of that PR as well, which is how the natives were executed.

Kas-tle and others added 5 commits September 5, 2026 16:24
Signed-off-by: Joshua Castle <[email protected]>
Signed-off-by: Joshua Castle <[email protected]>
The parent pom sets the classifier and the module name. The jni pom
selects the ARM64 generator platform, the multi config build type, and
the arm64 toolchain file. The new profiles have the same structure as
the linux cross profiles. They follow the host-activated windows
profiles in the pom, so their properties win on the amd64 cross
runner. The macos cross profile uses the same declaration order.

The CI lane has the same shape as the linux_arm lane: the cross build
skips the tests, because arm64 binaries cannot run on the x86_64
runner. The JNI shim keeps the ClangCL toolset of the x86_64 build, so
the ABI stays consistent with the clang-built engine.
The release workflow gains the windows_arm64 lane. The release action
builds it with the windows-aarch64 profile and skips the tests on the
cross runner, like the linux arm lanes. The publish job verifies the
new classifier and the release profile of the webrtc module attaches
it to the deployment bundle.
@devopvoid

Copy link
Copy Markdown
Owner

Thanks!

@devopvoid
devopvoid merged commit aa0ea23 into devopvoid:main Sep 6, 2026
8 checks passed
@SendableMetatype
SendableMetatype deleted the feature/windows-aarch64 branch September 6, 2026 12:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants